﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using PagoSOAPService.Persistencia;
using PagoSOAPService.Exception;

namespace PagoSOAPService
{
    public class Pagos : IPagos
    {
        private PagoDAO pagoDAO = new PagoDAO();

        private PagoDAO PagoDAO
        {
            get
            {
                if (pagoDAO == null)
                    pagoDAO = new PagoDAO();

                return pagoDAO;
            }
        }

        public int RegistrarPago(string banco, string ctabancaria, string moneda, string monto)
        {
            //Se pone de manera constante esa cuenta bancaria para el faultException
            string ctabancaria_ = "123456789";

            if (ctabancaria == ctabancaria_)
            {
                PagoException ex = new PagoException { Message = "El número de tarjeta no posee fondos suficientes para realizar esta transacción." };
                throw new FaultException<PagoException>(ex, ex.Message); 
            }

            try
            {
                //Se obtiene el Nuevo código de pago
                int nuevoID = PagoDAO.ObtenerNuevoIDPago();

                //Se invoca a registrar pago
                return PagoDAO.RegistrarPago(nuevoID, banco, ctabancaria, moneda, monto);

            }
            catch (FaultException<PagoException> ex1)
            {
                PagoException ex = new PagoException { Message = ex1.Message.ToString() };
                throw new FaultException<PagoException>(ex, ex.Message);
                //return 0;
                
            }

            
        }

    }
}
